#ifndef __PROXYSTARTER_HEADER
#define __PROXYSTARTER_HEADER

// 仿函数，代理进程启动器
// 接受一个oj名称，启动相应的代理进程
// 不符合开放封闭原则，添加或删除了OJ后
// 需要修改仿函数的代码
// 但不需要修改其他代码

#include "proxy_process.h"

#include <unistd.h>
#include <vector>
#include <string>
#include <utility>
#include <map>

#define START_PROXY_OK		0
#define START_PROXY_ERROR 	1

struct ProxyStarter {
	/* 
	   接受参数: OJ名称，监听进程与代理进程通信的管道fd，与日志进程通信的消息队列id
	*/
	int operator() (std::map<std::string, std::pair<int*, int*> > &pipe_map, 
		const char *oj_name, int msg_id, const char *cookie_dir) const;
};

#endif // __PROXYSTARTER_HEADER
